#include <stdio.h>
#include <pthread.h>
#include <sys/unistd.h>

void *callback(void *arg) {
    // 模拟子线程工作
    printf("Child Thread Start Work!\n");
    sleep(1);
    printf("Child Thread End Work!\n");

    return NULL;
}

int main() {
    // 线程取消函数
    // int pthread_cancel(pthread_t pid)
    // pid: 需要取消线程的 pid
    // pthread_cancel 调用并不等待线程终止, 它只提出请求
    // 线程在取消请求 pthread_cancel 发出后会继续运行, 直到到达某个取消点
    // 取消点是线程检查是否被取消并按照请求进行动作的一个位置

    pthread_t pid;
    pthread_create(&pid, NULL, callback, NULL);

    // 取消子线程的执行, 并不会阻塞等待子线程的执行
    pthread_cancel(pid);
    pthread_exit(NULL);

}